home *** CD-ROM | disk | FTP | other *** search
- static const char version[] = "$VER: qwriter 2.0 (13.8.93)";
-
- /*
- * Contains main() for qwriter
- * $Header: /u/opi/86/jraja/ohtatcp/amitcp/util/qwriter/RCS/main.c,v 2.2 1993/08/10 20:46:23 jraja Exp $
- * $Log: main.c,v $
- * Revision 2.2 1993/08/10 20:46:23 jraja
- * Added version string.
- *
- * Revision 2.1 1993/04/20 18:48:04 puhuri
- * Table for distribution was too small by one.
- *
- * Revision 2.0 93/03/20 17:31:42 17:31:42 ppessi (Pekka Pessi)
- * initial netlib version..
- *
- * Revision 1.7 93/03/19 16:49:42 16:49:42 puhuri (Markus Peuhkuri)
- * Add possibility to make non-uniform distribution of length of
- * replied data in telnet-server.
- *
- * Revision 1.6 93/03/19 14:44:43 14:44:43 puhuri (Markus Peuhkuri)
- * Add modifications made by too and ppessi.
- *
- * Revision 1.5 93/03/16 19:13:59 19:13:59 too (Tomi Ollila)
- * code fixes
- *
- * Revision 1.4 93/03/16 10:42:28 10:42:28 puhuri (Markus Peuhkuri)
- * Added AmiTCP stuff.
- *
- * Revision 1.3 93/03/15 18:59:27 18:59:27 puhuri (Markus Peuhkuri)
- * Cleaned code
- *
- */
-
- #ifdef AMIGA
- #include <exec/types.h>
- #include <sys/types.h>
- #if __SASC
- #include <proto/socket.h>
- #elif __GNUC__
- #include <inline/socket.h>
- #else
- #include <clib/socket_protos.h>
- #endif
- #endif /* AMIGA */
-
- #ifdef __STDC__
- #include <stdlib.h>
- #endif
-
- #include <stdio.h>
-
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/ioctl.h>
-
- #include <netinet/in.h>
-
- #include <stdio.h>
- #include "qwriter.h"
-
- #include <string.h> /* after qwriter.h */
-
- #define TEST_NFS 1
- #define TEST_FTP 2
- #define TEST_TELNET 3
- #define SERVER 1
- #define CLIENT 2
- #define FALSE 0
- #define TRUE 1
-
- char *failure(char *txt)
- {
- fprintf(stderr,txt);exit(1);return "F";
- }
-
- int
- main(int argc,char **argv)
- {
- int i;
- int act = SERVER, /* Some reasionable values */
- type = TEST_TELNET,
- rounds = 1,
- length = 1000,
- bufsiz = BUFFERLEN,
- port1 = 1500,
- port2 = 1501,
- chk = FALSE,
- *dtable = NULL;
- char *host = "127.0.0.1"; /* "localhost" */
- double tval = NFSTIMEOUT;
-
- #ifdef NODB
- MyHost = host;
- #endif
- #define ARG2 ((i < argc -1) ? argv[++i] :failure("Missign argument"))
- for(i = 1 ; i < argc; i++)
- if(*argv[i] == '-'){
- switch(*(argv[i]+1)){
- case 's': /* We are server */
- act = SERVER;
- break;
- case 'c': /* We are client */
- act = CLIENT;
- break;
- case 't':
- switch(*ARG2){ /* Store type of test */
- case 't':
- type = TEST_TELNET;
- break;
- case 'n':
- type = TEST_NFS;
- break;
- case 'f':
- type = TEST_FTP;
- break;
- default:
- failure("unknown type\n");
- }
- break;
- case 'n': /* Rounds in test */
- rounds = atoi(ARG2);
- break;
- case 'l': /* Length argument */
- length = atoi(ARG2);
- break;
- case 'b': /* Size of buffer */
- bufsiz = atoi(ARG2);
- break;
- case 'p': /* Port number */
- port1 = atoi(ARG2);
- break;
- case 'h': /* Name of host */
- host = ARG2;
- #ifdef NODB
- MyHost = host;
- #endif
- break;
- case 'q': /* Checksum verification */
- chk = TRUE;
- break;
- case 'd': /* Distribution of characters */
- {
- int j, k;
- char *p,*p0;
-
- p0 = ARG2;
- for(j=1, p = p0 - 1 ; p = strchr( p + 1, ','); j++)
- ;
- if(dtable = (int *)malloc((j + 1) * sizeof(int))){
- dtable[0] = j + 1;
- for(k = 1, p = p0; k <= j + 1; k++){
- dtable[k] = atoi(p);
- p = strchr(p, ',') + 1;
- DP(("%ld,", dtable[k]));
- }
- }
- }
- break;
- case 'T': /* Timeout value */
- tval = atof(ARG2);
- break;
- }
- }
- printf("act=%ld type=%ld rounds=%ld length=%ld bufsiz=%ld\n",
- act, type, rounds, length, bufsiz);
- printf("port1=%ld port2=%ld chk=%ld host='%s' tval=%lf\n",
- port1, port2, chk, host, tval);
-
- if(act == SERVER)
- switch(type){
- case TEST_TELNET:
- if(!dtable)
- if((dtable=(int *)malloc(2 * sizeof(int)))==NULL)
- break;
- else {
- dtable[0] = 1;
- dtable[1] = length;
- }
- telnet_server(port1, dtable, chk);
- break;
- case TEST_FTP:
- ftp_server(port1, bufsiz, chk);
- break;
- case TEST_NFS:
- nfs_server(host, port1, bufsiz, length, chk);
- break;
- }
- else
- switch(type){
- case TEST_TELNET:
- telnet_client(host, port1, rounds, bufsiz, chk);
- break;
- case TEST_FTP:
- ftp_client(host, port1, length, bufsiz, chk);
- break;
- case TEST_NFS:
- nfs_client(host, port1, rounds, length, bufsiz, tval, chk);
- break;
- }
- if(dtable)
- free(dtable);
- }
-